home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #045 (1990)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #045 (1990)(Amiga User Group Deutschland e.V.).adf / DT / dtx.c < prev   
C/C++ Source or Header  |  1989-07-02  |  2KB  |  85 lines

  1. /*********************************************************
  2. *                                                                            *
  3. *                        PROGRAMM :            dt                            *
  4. *                    ===========================                    *
  5. *                                                                            *
  6. *        compile: AZTEC_C +l                link:    -m -lc            *
  7. *                                                                            *
  8. *        Autor    :    JAN Andreas Neuper    Datum    : 03/09/1989    *
  9. *                                                                            *
  10. *    Bem.:    kurzer Code, lange Sourcedatei, nicht optimiert    *
  11. *                                                                            *
  12. *********************************************************/
  13.  
  14. #include <exec/types.h>
  15. #include    <libraries/dos.h>
  16. #include    <functions.h>
  17.  
  18. char    str[]    = " 00:00:00 Uhr, am ";
  19. char    str2[] = " den    ";
  20. char    str3[] = " 1989;";
  21. char    str4[] = ".Tag und ";
  22. char    str5[] = ".Woche\n";
  23. short    ylen[] = { 365,365,366,365 };
  24. char    mlen[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
  25. char    *wday[] = { "Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"};
  26. char    *month[] = { "Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember" };
  27.  
  28. put(str)
  29. void *str;
  30. {    void *fhd;
  31.     fhd = Open("*",MODE_OLDFILE);
  32.     Write(fhd,str,strlen(str));
  33.     Close(fhd);
  34. }
  35.  
  36. long    artic(n,string,val,fmt)
  37. long    n,val;
  38. BOOL    fmt;
  39. char    *string;
  40. {    
  41.     if(val>99) string[n++] = val/100+'0';
  42.     if(val>9) string[n++] = (val%100)/10+'0';
  43.     else if(fmt) n++;
  44.     string[n++] = val%10+'0';
  45.     return(n);
  46. }
  47.  
  48. _main(argc,argv)
  49. int    argc;
  50. char    *argv;    /* diese Zeile ist OK ! keine [], da _main; argc ist Dummy */
  51. {    int    register    i;
  52.     long    ptr[3];
  53.     long    year,days,week;
  54.     short    mon=0;
  55.  
  56.     DateStamp(ptr);
  57.     artic(1,str,ptr[1]/60,TRUE);                                        /*    Uhrzeit    */
  58.     artic(4,str,ptr[1]%60,TRUE);
  59.     artic(7,str,ptr[2]/50,TRUE);
  60.     put(str);
  61.  
  62.     put(wday[ptr[0]%7]);                                                /*     Wochentag    */
  63.     /* ¡ Woche beginnt mit Sonntag ! ==> 'Woche'    */
  64.  
  65.     days = ptr[0];        /* +1 wegen Datumsbeginn am 1.1.78    */        /*    Datum    */
  66.     days++;
  67.     year = 978;                                                                    /*    Jahr    */
  68.     for(i=0;days>(long)ylen[i%4];i++)    {    year++;days -= (long)ylen[i%4];}
  69.         /* soll nur bis 2399 A.D. gelten    */
  70.     if(i%4==2) mlen[1] = 29;                                                /*    Monat    */
  71.     week = days;
  72.     for(i=0;days>(long)mlen[i];i++) {mon++;days -= (long)mlen[i];}
  73.     str2[days = artic(5,str2,days,FALSE)] = '.';            /*    Tag  im  Monat    */
  74.     str2[days+1] = 0;
  75.     put(str2);                                                /* Ausgabe  des  Datums    */ 
  76.     put(month[mon]);
  77.     if (year>=1000) str3[1] = '2';
  78.     artic(2,str3,year%1000,FALSE);
  79.     put(str3);
  80.     str[artic(1,str,week,FALSE)] = 0;                        /* Tag des Jahres    */
  81.     put(str);put(str4);
  82.     str[artic(1,str,week/7+1,FALSE)] = 0;                /*  Woche des Jahres    */
  83.     put(str);put(str5);
  84. }
  85.